package testCase;

import java.util.Scanner;

import spil.DiceCup;
import spil.GameBoard;
import spil.Spiller;
import spil.TUI;
import spil.Text;
import spil.iAdapter;

public class TestCase02 {
	
	public static void main(String[] args) {
		
		/*
		 *  Generel opsætning der benyttes af alle test cases
		 */
		Text.read(); 
		GameBoard gameBoard = new GameBoard();
		Spiller spiller1 = new Spiller(), spiller2 = new Spiller();
		DiceCup rafle = new DiceCup();
		gameBoard.feltSetup();
		iAdapter ui = null;
		ui = new TUI(gameBoard);
		spiller1.setName("spiller1");
		spiller2.setName("spiller2");
		Scanner scan = new Scanner(System.in);
		
		/*
		 *  Test Case 2 - specifik opsætning
		 */
		spiller1.getKonto().setBalance(50); //Sæt Spiller1’s konto 0<xx<80
		System.out.println("Test Case 2:");
		System.out.println("Spiller 1 balance: " + spiller1.getKonto().getBalance());
		
		
		// Kører en runde, dog bestemmer vi hvad terningenslaget bliver i stedet for random værdier
		boolean endGame = false; // true = while-loop afsluttes, der er fundet en vinder!
		
		do{
			//spiller1 tur
			do{
				ui.showMessage(spiller1.getName() + "'s tur. Tryk Enter for at fortsætte"); // Beder spilleren trykke ok/Enter for at slå med terningerne
				rafle.rollDice(); // Slår med terningerne
				
				System.out.println("Indtast værdier for det ønskede antal øjne på terningerne (1-6):");
				int n1 = scan.nextInt();
				int n2 = scan.nextInt();
				rafle.setDice(n1, n2);
				
				ui.setDice(rafle.getDice()[0], rafle.getDice()[1]); // Viser terningeslaget på interface
				spiller1.getKonto().updBalance(gameBoard.getConsequence(rafle.sum())); // Opdaterer spillerens balance/point
				ui.removeCar(1, spiller1.getName()); // Fjerner bilen fra start-feltet
				ui.setCar(rafle.sum(), spiller1.getName()); // Sætter bilen på det felt svarende til hvad spilleren har slået med terningerne
				ui.setBalance(spiller1.getName(), spiller1.getKonto().getBalance()); // Opdaterer spillerens balance/point på spillepladen
				ui.showMessage(gameBoard.getDescriptionText(rafle.sum())); // Viser beskrivelsen af feltet for spilleren
				ui.removeCar(rafle.sum(), spiller1.getName()); // Fjerner bilen fra det felt spilleren er landet på
				ui.setCar(1, spiller1.getName()); // Sætter bilen på startfeltet
			}
			while(rafle.sum()==10); // Summen 10 giver ekstraslag
			
			//spiller2 tur
			do{
				ui.showMessage(spiller2.getName() + "'s tur. Tryk Enter for at fortsætte");
				rafle.rollDice();
				
				System.out.println("Indtast værdier for det ønskede antal øjne på terningerne (1-6):");
				int n3 = scan.nextInt();
				int n4 = scan.nextInt();
				rafle.setDice(n3, n4);
				
				ui.setDice(rafle.getDice()[0], rafle.getDice()[1]);
				spiller2.getKonto().updBalance(gameBoard.getConsequence(rafle.sum()));
				ui.removeCar(1, spiller2.getName());
				ui.setCar(rafle.sum(), spiller2.getName());
				ui.setBalance(spiller2.getName(), spiller2.getKonto().getBalance());
				ui.showMessage(gameBoard.getDescriptionText(rafle.sum()));
				ui.removeCar(rafle.sum(), spiller2.getName());
				ui.setCar(1, spiller2.getName());
			}
			while(rafle.sum()==10);
			
			//win conditions undersøges
			if(spiller1.getKonto().getBalance()<0 || spiller2.getKonto().getBalance()<0 || spiller1.getKonto().getBalance()>=3000 || spiller2.getKonto().getBalance()>=3000){
				if(spiller1.getKonto().getBalance()==spiller2.getKonto().getBalance()){
					ui.showMessage("UAFGJORT");
				}
				else if(spiller1.getKonto().getBalance()>spiller2.getKonto().getBalance()){
					ui.showMessage(spiller1.getName()+" "+"VINDER");
				}
				else if(spiller2.getKonto().getBalance()>spiller1.getKonto().getBalance()){
					ui.showMessage(spiller2.getName()+" "+"VINDER");
				}
				endGame=true;
			}
		
}
while(endGame==false);
	scan.close();
		
	}
}
